package com.peking.donations.plugins.pay.wx.protocol.pay;


import com.peking.donations.plugins.pay.wx.constants.ErrorCode;
import com.peking.donations.plugins.pay.wx.constants.TradeType;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * Created by YGR on 16/3/2.
 */
@XmlRootElement(name = "xml")
public class UnifiedPayRepData {

    /**
     * 返回状态码
     *
     * <p>
     * 是 String(16) SUCCESS/FAIL 此字段是通信标识,非交易 标识,交易是否成功需要查 看 result_code 来判断
     * </p>
     */
    @XmlElement(name = "return_code")
    public String return_code;

    /**
     * 返回信息
     *
     * <p>
     * 是 String(128) 返回信息,如非空,为错误 原因 签名失败 参数格式校验错误
     * </p>
     */
    @XmlElement(name = "return_msg")
    public String return_msg;

    /** <b> 以下字段在 return_code 为 SUCCESS 的时候有返回 </b> */

    /**
     * 公众账号 ID
     *
     * <p>
     * String(32),微信分配的公众账号
     * </p>
     */
    @XmlElement(name = "appid")
    public String appid;

    /**
     * 商户号
     *
     * <p>
     * mch_id 是 String(32) 微信支付分配的商户号
     * </p>
     */
    @XmlElement(name = "mch_id")
    public String mch_id;

    /**
     * 设备号
     *
     * <p>
     * device_info 否 String(32) 微信支付分配的终端设备号
     * </p>
     */
    @XmlElement(name = "device_info")
    public String device_info;

    /**
     * 随机字符串
     *
     * <p>
     * nonce_str 是 String(32) 随机字符串,不长于 32 位
     * </p>
     */
    @XmlElement(name = "nonce_str")
    public String nonce_str;

    /**
     * 签名
     *
     * <p>
     * sign 是 String(32) 签名
     * </p>
     */
    @XmlElement(name = "sign")
    public String sign;

    /**
     * 业务结果
     *
     * <p>
     * 是 String(16) SUCCESS/FAIL
     * </p>
     */
    @XmlElement(name = "result_code")
    public String result_code;

    /**
     * 错误代码
     *
     * <p>
     * err_code 否 String(32)
     * </p>
     * 
     */
    @XmlElement(name = "err_code")
    public ErrorCode err_code;

    /**
     * 错误代码描述
     * 
     * <p>
     * String(128) 结果信息描述
     * </p>
     */
    @XmlElement(name = "err_code_des")
    public String err_code_des;

    /** <b> 以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回</b> */

    /**
     * 交易类型
     * 
     * <p>
     * trade_type 是 String(16) JSAPI、NATIVE、APP
     * </p>
     * 
     */
    @XmlElement(name = "trade_type")
    public TradeType trade_type;

    /**
     * 预支付 ID
     * 
     * <p>
     * 是 String(64) 微信生成的预支付 ID,用于 后续接口调用中使用
     * </p>
     */
    @XmlElement(name = "prepay_id")
    public String prepay_id;

    /**
     * 二维码链接
     * 
     * <p>
     * code_url 否 String(64) trade_type 为 NATIVE 是有 返回,此参数可直接生成二 维码展示出来进行扫码支付
     * </p>
     */
    @XmlElement(name = "code_url")
    public String code_url;

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public void setCode_url(String code_url) {
        this.code_url = code_url;
    }

    public void setDevice_info(String device_info) {
        this.device_info = device_info;
    }

    public void setErr_code(ErrorCode err_code) {
        this.err_code = err_code;
    }

    public void setErr_code_des(String err_code_des) {
        this.err_code_des = err_code_des;
    }

    public void setMch_id(String mch_id) {
        this.mch_id = mch_id;
    }

    public void setNonce_str(String nonce_str) {
        this.nonce_str = nonce_str;
    }

    public void setPrepay_id(String prepay_id) {
        this.prepay_id = prepay_id;
    }

    public void setResult_code(String result_code) {
        this.result_code = result_code;
    }

    public void setReturn_code(String return_code) {
        this.return_code = return_code;
    }

    public void setReturn_msg(String return_msg) {
        this.return_msg = return_msg;
    }

    public void setSign(String sign) {
        this.sign = sign;
    }

    public void setTrade_type(TradeType trade_type) {
        this.trade_type = trade_type;
    }

    @Override
    public String toString() {
        return "UnifiedPayRepData{" + "appid='" + appid + '\'' + ", return_code='" + return_code + '\''
                + ", return_msg='" + return_msg + '\'' + ", mch_id='" + mch_id + '\'' + ", device_info='" + device_info
                + '\'' + ", nonce_str='" + nonce_str + '\'' + ", sign='" + sign + '\'' + ", result_code='" + result_code
                + '\'' + ", err_code=" + err_code + ", err_code_des='" + err_code_des + '\'' + ", trade_type="
                + trade_type + ", prepay_id='" + prepay_id + '\'' + ", code_url='" + code_url + '\'' + '}';
    }
}
